[Xamarin] 設定値保存を Settings Plugin から Xamarin.Essentials に移行してみた

[Xamarin] 設定値保存を Settings Plugin から Xamarin.Essentials に移行してみた

Xamarin製アプリで設定値を保存する方法について、「SettingsPlugin」から「Xamarin.Essentials」に移行してみました。
Clock Icon2020.10.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Xamarin製アプリで設定値を保存するとき、下記のライブラリにお世話になっています。

ふと設定値保存の機能をXamarin.Essentialsに移行できる事に気づいたので、実際に移行してみました。 設定値も引き継がれます。

Xamarin.EssentialsのPreferencesに移行する

既存プロジェクトにXamarin.Essentialsを導入(更新)する

Xamarin.Essentialsを導入(or 更新)します。

Xamarin.Essentials を導入する

設定箇所のコードを修正する

変更前のコード

SettingsPluginを使用しているコードです。

using System.Dynamic;
using Plugin.Settings;
using Plugin.Settings.Abstractions;

namespace Sample.Models
{
    public static class Settings
    {
        private static ISettings AppSettings => CrossSettings.Current;

        public static bool FooEnable
        {
            get => AppSettings.GetValueOrDefault(nameof(FooEnable), false);
            set => AppSettings.AddOrUpdateValue(nameof(FooEnable), value);
        }

        public static string BarText
        {
            get => AppSettings.GetValueOrDefault(nameof(BarText), "xxxx");
            set => AppSettings.AddOrUpdateValue(nameof(BarText), value);
        }
    }
}

変更後のコード

Xamarin.Essentialsを使用するように変更したコードです。

using Xamarin.Essentials;

namespace Sample.Models
{
    public static class Settings
    {
        public static bool FooEnable
        {
            get => Preferences.Get(nameof(FooEnable), false);
            set => Preferences.Set(nameof(FooEnable), value);
        }

        public static string BarText
        {
            get => Preferences.Get(nameof(BarText), "xxxx");
            set => Preferences.Set(nameof(BarText), value);
        }
    }
}

上記のコードの場合、単純な置換作業でOKでした。

変更前 変更後
AppSettings Preferences
GetValueOrDefault Get
AddOrUpdateValue Set

使用箇所は変更不要

上記コードを使用している部分(設定を参照する・変更する)は、変更不要です。

# Set sample
Settings.FooEnable = true;

# Get sample
return Settings.FooEnable;

SettingsPluginを削除

最後に今まで使っていたSettingsPluginを削除します。ありがとうございました!

SettingsPluginを削除する

さいごに

思っていたよりもすんなりと移行できて良かったです。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.